/**
 * @author David Young
 */
package csab.core;


import org.newdawn.slick.Input;

/**
 * An interface which is meant to be used as a method of controlling
 * the behavior of in-game Sprites. Can be used for player input,
 * AI, or both at the same time.
 * @author David Young
 * @see csab.core.Sprite
 */
public interface BehaviorController {
	/**
	 * Perform a behavior based on the designated parameters.
	 * @param delta The time, in milliseconds, since the past update.
	 * @param target A list of sprite objects currently in the game world.
	 * @param i The input interface (for the keyboard/controller).
	 * @see java.util.List
	 * @see csab.core.Sprite
	 * @see org.newdawn.slick.Input
	 */
	public void doBehavior(int delta, Sprite target, Input i);
	
	/**
	 * Get the sprite owned by this BehaviorController.
	 * @return The Sprite that this BehaviorController
	 * is attached to.
	 * @see csab.core.Sprite
	 */
	public Sprite getOwnedSprite();
}
